/* 
 * Copyright 2013-2020 Modeliosoft
 * 
 * This file is part of Modelio.
 * 
 * Modelio is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Modelio is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Modelio.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2015.12.02 at 02:29:48 PM CET
//
package org.modelio.bpmnxml.model;

import java.util.ArrayList;
import java.util.List;
import com.modeliosoft.modelio.javadesigner.annotations.objid;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElementRef;
import jakarta.xml.bind.annotation.XmlSeeAlso;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;

/**
 * <p>Java class for tCollaboration complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="tCollaboration">
 * &lt;complexContent>
 * &lt;extension base="{http://www.omg.org/spec/BPMN/20100524/MODEL}tRootElement">
 * &lt;sequence>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}participant" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}messageFlow" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}artifact" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}conversationNode" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}conversationAssociation" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}participantAssociation" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}messageFlowAssociation" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}correlationKey" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element name="choreographyRef" type="{http://www.w3.org/2001/XMLSchema}QName" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}conversationLink" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;/sequence>
 * &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="isClosed" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 * &lt;anyAttribute processContents='lax' namespace='##other'/>
 * &lt;/extension>
 * &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 */
@objid ("d1084005-615e-4906-8f25-746b722b5abf")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "tCollaboration", propOrder = {
    "participant",
    "messageFlow",
    "artifact",
    "conversationNode",
    "conversationAssociation",
    "participantAssociation",
    "messageFlowAssociation",
    "correlationKey",
    "choreographyRef",
    "conversationLink"
})
@XmlSeeAlso({
    TGlobalConversation.class,
    TChoreography.class
})
public class TCollaboration extends TRootElement {
    @objid ("4db8d9bb-f17a-4068-a2b7-6f5cdefc47f3")
    @XmlAttribute(name = "name")
    protected String name;

    @objid ("8e93b7c6-f7b9-44bd-b2cf-b02e8a39cc43")
    @XmlAttribute(name = "isClosed")
    protected Boolean isClosed;

    @objid ("caa489f1-bbf4-4c1e-a7b8-d9b40bcaae42")
    protected List<TParticipant> participant;

    @objid ("fd346fa2-d5b1-464b-ab2b-672245d7337f")
    protected List<TMessageFlow> messageFlow;

    @objid ("14119546-b5ec-43f1-9b53-70fe9023b7a5")
    @XmlElementRef(name = "artifact", namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", type = JAXBElement.class, required = false)
    protected List<JAXBElement<? extends TArtifact>> artifact;

    @objid ("8fea800e-1bca-4d90-8a3d-a079ff981d37")
    @XmlElementRef(name = "conversationNode", namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", type = JAXBElement.class, required = false)
    protected List<JAXBElement<? extends TConversationNode>> conversationNode;

    @objid ("54b03a32-7896-49f9-ba25-754a11addb5e")
    protected List<TConversationAssociation> conversationAssociation;

    @objid ("a9a12d64-adeb-49f6-8ddf-62315cdd2c8e")
    protected List<TParticipantAssociation> participantAssociation;

    @objid ("aee8bca6-7867-4cf2-bb90-870966e6dcd2")
    protected List<TMessageFlowAssociation> messageFlowAssociation;

    @objid ("5f5648c5-fa67-41c6-8efb-7ce6e039be3e")
    protected List<TCorrelationKey> correlationKey;

    @objid ("e63bd38e-f57c-4025-a032-66c9f0ca1d44")
    protected List<QName> choreographyRef;

    @objid ("7e39c820-65f6-4b96-9acf-0c126196c75b")
    protected List<TConversationLink> conversationLink;

    /**
     * Gets the value of the participant property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the participant property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getParticipant().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TParticipant }
     */
    @objid ("860cb002-c2e3-43aa-b260-56d3fd4a4af4")
    public List<TParticipant> getParticipant() {
        if (this.participant == null) {
            this.participant = new ArrayList<>();
        }
        return this.participant;
    }

    /**
     * Gets the value of the messageFlow property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the messageFlow property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getMessageFlow().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TMessageFlow }
     */
    @objid ("94d29ce2-4ee2-4722-bd9b-595669fe61bd")
    public List<TMessageFlow> getMessageFlow() {
        if (this.messageFlow == null) {
            this.messageFlow = new ArrayList<>();
        }
        return this.messageFlow;
    }

    /**
     * Gets the value of the artifact property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the artifact property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getArtifact().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link TAssociation }{@code >}
     * {@link JAXBElement }{@code <}{@link TGroup }{@code >}
     * {@link JAXBElement }{@code <}{@link TArtifact }{@code >}
     * {@link JAXBElement }{@code <}{@link TTextAnnotation }{@code >}
     */
    @objid ("5e47561d-48bc-4cf3-ab08-3d1938aafc4d")
    public List<JAXBElement<? extends TArtifact>> getArtifact() {
        if (this.artifact == null) {
            this.artifact = new ArrayList<>();
        }
        return this.artifact;
    }

    /**
     * Gets the value of the conversationNode property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the conversationNode property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getConversationNode().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link TSubConversation }{@code >}
     * {@link JAXBElement }{@code <}{@link TCallConversation }{@code >}
     * {@link JAXBElement }{@code <}{@link TConversation }{@code >}
     * {@link JAXBElement }{@code <}{@link TConversationNode }{@code >}
     */
    @objid ("6c1faaec-5914-45c9-a039-039d1da91476")
    public List<JAXBElement<? extends TConversationNode>> getConversationNode() {
        if (this.conversationNode == null) {
            this.conversationNode = new ArrayList<>();
        }
        return this.conversationNode;
    }

    /**
     * Gets the value of the conversationAssociation property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the conversationAssociation property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getConversationAssociation().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TConversationAssociation }
     */
    @objid ("93c8e0cf-e468-4a3e-9000-1613c3749dfd")
    public List<TConversationAssociation> getConversationAssociation() {
        if (this.conversationAssociation == null) {
            this.conversationAssociation = new ArrayList<>();
        }
        return this.conversationAssociation;
    }

    /**
     * Gets the value of the participantAssociation property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the participantAssociation property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getParticipantAssociation().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TParticipantAssociation }
     */
    @objid ("b7555a9a-2815-48be-bfe2-5f2b86003c18")
    public List<TParticipantAssociation> getParticipantAssociation() {
        if (this.participantAssociation == null) {
            this.participantAssociation = new ArrayList<>();
        }
        return this.participantAssociation;
    }

    /**
     * Gets the value of the messageFlowAssociation property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the messageFlowAssociation property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getMessageFlowAssociation().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TMessageFlowAssociation }
     */
    @objid ("88ce945e-46cf-4228-86a4-63488660534e")
    public List<TMessageFlowAssociation> getMessageFlowAssociation() {
        if (this.messageFlowAssociation == null) {
            this.messageFlowAssociation = new ArrayList<>();
        }
        return this.messageFlowAssociation;
    }

    /**
     * Gets the value of the correlationKey property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the correlationKey property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getCorrelationKey().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TCorrelationKey }
     */
    @objid ("48173511-7278-45ac-9ef7-cbb13b6406c7")
    public List<TCorrelationKey> getCorrelationKey() {
        if (this.correlationKey == null) {
            this.correlationKey = new ArrayList<>();
        }
        return this.correlationKey;
    }

    /**
     * Gets the value of the choreographyRef property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the choreographyRef property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getChoreographyRef().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link QName }
     */
    @objid ("b82bd5b5-cbb3-48e6-81e9-3f9780d35671")
    public List<QName> getChoreographyRef() {
        if (this.choreographyRef == null) {
            this.choreographyRef = new ArrayList<>();
        }
        return this.choreographyRef;
    }

    /**
     * Gets the value of the conversationLink property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the conversationLink property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getConversationLink().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TConversationLink }
     */
    @objid ("675b47ae-7c82-4e11-8cd7-afadab616ffe")
    public List<TConversationLink> getConversationLink() {
        if (this.conversationLink == null) {
            this.conversationLink = new ArrayList<>();
        }
        return this.conversationLink;
    }

    /**
     * Gets the value of the name property.
     * @return
     * possible object is
     * {@link String }
     */
    @objid ("abc2419e-8e28-4720-8b97-4fca4c91ec2d")
    public String getName() {
        return this.name;
    }

    /**
     * Sets the value of the name property.
     * @param value allowed object is
     * {@link String }
     */
    @objid ("4959e59f-0d04-4528-b719-66b8e8db7ab8")
    public void setName(String value) {
        this.name = value;
    }

    /**
     * Gets the value of the isClosed property.
     * @return
     * possible object is
     * {@link Boolean }
     */
    @objid ("f62a0421-ee41-43f1-8b3c-4c90a41ee0a3")
    public boolean isIsClosed() {
        if (this.isClosed == null) {
            return false;
        } else {
            return this.isClosed;
        }
        
    }

    /**
     * Sets the value of the isClosed property.
     * @param value allowed object is
     * {@link Boolean }
     */
    @objid ("6446c626-449e-4925-b183-3ec43550dd73")
    public void setIsClosed(Boolean value) {
        this.isClosed = value;
    }

}
